﻿Public Class FrmServicios

    Dim classController As New Class_RC_Controller.rc_Servicios
    Private _codServicio As Integer = 0

    Public Property codServicio() As Integer
        Get
            Return _codServicio
        End Get
        Set(value As Integer)
            _codServicio = value
        End Set
    End Property

    Private Sub FrmServicios_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        CargarCombos()
        CargarServicio()
    End Sub

    Private Sub CargarCombos()
        Dim dsTipo As New DataTable
        dsTipo = classController.get_tipo_Servicios(oiml.dbConn)
        If Not dsTipo Is Nothing Then
            If dsTipo.Rows.Count > 0 Then
                cboTipoServicio.DataSource = dsTipo
                cboTipoServicio.DisplayMember = "DescTipoServicio"
                cboTipoServicio.ValueMember = "codTipoServicio"
            End If
        End If
    End Sub

    Private Sub CargarServicio()
        Try
            If codServicio > 0 Then

                Dim ds As New DataTable
                ds = classController.get_Servicios_All(oiml.dbConn, codServicio, "", 0, False)

                If Not ds Is Nothing Then
                    txtDescripcion.Text = ds.Rows(0)("descripcion")
                    txtCosto.Text = ds.Rows(0)("costo")
                    cboTipoServicio.SelectedValue = ds.Rows(0)("codTipoServicio")
                    txtPrecio.Text = ds.Rows(0)("precio")
                    lblUsuario.Text = ds.Rows(0)("usuario").ToString
                    lblfechaActualizacion.Text = DateTime.Parse(ds.Rows(0)("fechaActualizacion")).ToShortDateString
                End If

            Else
                txtCosto.Text = 0
                txtPrecio.Text = 0
                lblUsuario.Text = oiml.Usuario
                lblfechaActualizacion.Text = Date.Now.ToShortDateString
                txtDescripcion.Focus()

            End If

        Catch ex As Exception
            MessageBox.Show("Error: " & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

        End Try

    End Sub

    Private Sub btnCancelar_Click(sender As System.Object, e As System.EventArgs) Handles btnCancelar.Click
        Me.Close()

    End Sub

    Private Sub btnEliminar_Click(sender As System.Object, e As System.EventArgs) Handles btnEliminar.Click

        If codServicio > 0 Then
            If MessageBox.Show("Desea eliminar el registro seleccionado?", "Servicios", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                If classController.Delete_Servicios(oiml.dbConn, codServicio) Then
                    Me.DialogResult = Windows.Forms.DialogResult.OK
                    Me.Close()

                Else
                    MessageBox.Show("Error: " & classController.MessageError.Message, "Servicios", MessageBoxButtons.OK, MessageBoxIcon.Error)

                End If

            End If
            
        End If

    End Sub

    Private Function ValidarCampos() As Boolean

        Dim controlCampos As Boolean = False

        If Not IsNumeric(txtCosto.Text) Then
            ErrorProvider.SetError(txtCosto, "Campo numerico, Costo")
            controlCampos = True
        Else
            ErrorProvider.SetError(txtCosto, "")
        End If        '

        If Not IsNumeric(txtPrecio.Text) Then
            ErrorProvider.SetError(txtPrecio, "Campo numerico, Costo")
            controlCampos = True
        Else
            ErrorProvider.SetError(txtPrecio, "")
        End If        '

        If txtDescripcion.Text = "" Then
            ErrorProvider.SetError(txtDescripcion, "Campo obligatorio")
            controlCampos = True
        Else
            ErrorProvider.SetError(txtDescripcion, "")
        End If        '

        Return controlCampos

    End Function

    Private Sub btnGrabar_Click(sender As System.Object, e As System.EventArgs) Handles btnGrabar.Click

        If ValidarCampos() Then
            Exit Sub
        End If

        If codServicio = 0 Then
            codServicio = classController.Insert_Servicios(oiml.dbConn, txtDescripcion.Text,
                                                           Decimal.Parse(txtCosto.Text), Integer.Parse(cboTipoServicio.SelectedValue),
                                                           Decimal.Parse(txtPrecio.Text), oiml.idUsuario)
            If codServicio > 0 Then
                MessageBox.Show("Registro grabado con exito!", "Servicios", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                Me.DialogResult = Windows.Forms.DialogResult.OK
                Me.Close()

            Else
                MessageBox.Show("Error: " & classController.MessageError.Message, "Servicios", MessageBoxButtons.OK, MessageBoxIcon.Error)

            End If

        Else
            If classController.Update_Servicios(oiml.dbConn, codServicio, txtDescripcion.Text, Decimal.Parse(txtCosto.Text), Integer.Parse(cboTipoServicio.SelectedValue),
                                                           Decimal.Parse(txtPrecio.Text), oiml.idUsuario) Then
                MessageBox.Show("Registro grabado con exito!", "Servicios", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                Me.DialogResult = Windows.Forms.DialogResult.OK
                Me.Close()

            Else
                MessageBox.Show("Error: " & classController.MessageError.Message, "Servicios", MessageBoxButtons.OK, MessageBoxIcon.Error)

            End If

        End If

    End Sub

End Class